import { ADDPERSON } from '../constant'

const base = [{ id: 173117002, name: 'Jimmy', age: 18 }]

/*
  reducers 就是一个个函数  用来处理和修改状态的
*/

function personReducer(preState = base, action) {
	const { type, data } = action

	switch (type) {
		/*
      reducer一定要是一个纯函数
        纯函数有以下的特点：
          1。 一样的输入 一定有着一样的输入
          2. 还需要遵守以下的规定
            1.不得改写参数数据
            2.不会产生副作用，如发起请求等等
            3.不能调用Date.now()  Math.random()等等 因为这几个每次访问都是不同的
          3. redux的reducer一定要是一个纯函数
    */
		case ADDPERSON:
			return [data, ...preState]
		/*
        这里如果返回的是 preState.unshift(data) 页面是不会刷新的
          1.修改了原来的 preState这个对象的值
          2.返回的是同一个对象 他们的引用地址是一样的  所以react监听不到他们的不同的
          3.已经违反了纯函数的规定
      */
		default:
			return preState
	}
}

export default personReducer
